package servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.netscenery.yang.model.*;
import com.netscenery.yang.writer.YangFormatter;


public class DemoServlet extends HttpServlet {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	/**
	 * Constructor of the object.
	 */
	public DemoServlet() {
		super();
	}

	/**
	 * Destruction of the servlet. <br>
	 */
	public void destroy() {
		super.destroy(); // Just puts "destroy" string in log
		// Put your code here
	}

	/**
	 * The doGet method of the servlet. <br>
	 *
	 * This method is called when a form has its tag value method equals to get.
	 * 
	 * @param request the request send by the client to the server
	 * @param response the response send by the server to the client
	 * @throws ServletException if an error occurred
	 * @throws IOException if an error occurred
	 */
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		this.doPost(request, response);
	}

	/**
	 * The doPost method of the servlet. <br>
	 *
	 * This method is called when a form has its tag value method equals to post.
	 * 
	 * @param request the request send by the client to the server
	 * @param response the response send by the server to the client
	 * @throws ServletException if an error occurred
	 * @throws IOException if an error occurred
	 */
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		response.setContentType("text/xml; charset=utf-8");
		PrintWriter out = response.getWriter();
		
		request.setCharacterEncoding("utf-8");
		String name = request.getParameter("module_name");
		String namespace = request.getParameter("namespace");
		String prefix = request.getParameter("prefix");
		String description = request.getParameter("description");
		String organization = request.getParameter("organization");
		String reference = request.getParameter("reference");
		String revision_name = request.getParameter("revision");
		
		Revision revision = new Revision();
		revision.setName(revision_name);
		//ArrayList<Revision> revisionList = new ArrayList<Revision>();
		
		//revisionList.add(revision);
		
		Env demoEvn = new Env();
		MainModule demoModule;
			try {
				demoModule = new MainModule(demoEvn ,name, namespace , prefix);
				demoModule.setDescription(description);
				demoModule.getClass();
						
				demoModule.setOrganization(organization);
				
				demoModule.setReference(reference);
				
				demoModule.addRevision(revision);
				YangFormatter formatter = new YangFormatter();
				formatter.setPrettyFormatter();
				out.write(demoModule.toYANGString(formatter));
			} catch (ModelException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
		
		
		
		
		out.flush();
		out.close();
	}

	/**
	 * Initialization of the servlet. <br>
	 *
	 * @throws ServletException if an error occurs
	 */
	public void init() throws ServletException {
		// Put your code here
	}

}
